草庐IT

C++,关于 fprintf 和 ofstream

全部标签

c++ - 关于 RAII,C++ `try`/`catch` block 是否与其他 block 相同?

好吧,如果我使用RAII习惯用法来管理某些上下文属性*,如果我在tryblock的开头直接使用它,它会像我预期的那样工作吗?换句话说,如果我有这个:structraii{raii(){std::cout……我成功地使用了它:{raiido_the_raii_thing;stuff_expecting_raii_context();/*…*/}...如果我这样做,RAII实例会以同样的方式工作吗:try{raiido_the_raii_thing;stuff_expecting_raii_context_that_might_throw();/*…*/}catch(std::except

关于最近VSCode的Python代码格式化失效问题的解决办法

隔了一段时间再次打开VSCode写Python脚本,Python扩展弹出一条警告查看日志输出发现Python的代码格式化设置发生了变化简单来说就是Python扩展已经将原有的默认代码格式化工具"ms-python.python"弃用,格式化功能已移交到单独的格式化工具扩展。所有以"python.linting"开头的设置都已被弃用,需要自行安装yapf、black等格式化工具。下面我以yapf为例,重新设置格式化工具。首先在扩展商店搜索yapf扩展并安装详情里已经写了设置方法,打开设置,在settings.json文件里修改,找到[Python]下的"editor.defaultFormatt

c++ - 将 ofstream 对象从主程序传递给类

这是我正在尝试做的事情:1)在我的主体中打开一个ofstream对象。我可以做到这一点没问题。2)将此对象与文件名相关联。没问题。3)将此对象传递给类并在此类内发送输出。我做不到。这是我的代码。我将不胜感激任何帮助。谢谢!#include#includeusingnamespacestd;typedefclassObject{public:Object(ofstreamfilein);}Object;Object::Object(ofstreamfilein){filein 最佳答案 您必须通过引用传递流对象:Object::Obj

c++ - 关于 C++ 枚举的问题

我试过像这样在for循环中使用枚举:enumfoo{foo_0,foo_1,foo_2,foo_3,...foo_n,foo_count};for(foof=foo_0;f我有一个编译错误。我知道这是无效的,因为++f可能不是有效的foo枚举-在这种情况下不是,但在一般情况下,所以我将for循环切换为:for(foof=foo_0;f编译正常。但这引发了以下问题。如果我有fallowing语句会怎样?foof=foo(k);//kisnotavalidfoovalue这是未定义的行为吗?编辑:k是一个int,它在foo中没有任何对应的值编辑2:enumfoo{foo_0,foo_1,f

c++ - 关于 C++ 中的迭代器

我从“更有效的C++”中阅读了一些内容,第18项:Inbrief,theiteratoritisanobject,notapointer,sothereisnoguaranteethat“->”canbeappliedtoit.†TheSTLdoesrequirethat“.”and“*”bevalidforiterators,however,so(*it).second,thoughsyntacticallyclumsy,isguaranteedtowork.)通常,我在迭代器上使用->,没有任何问题。谁能举个例子或解释一下? 最佳答案

c++ - 为什么这个编译器错误? - 没有匹配函数调用 'std::basic_ofstream<char>::open(std::string&)'

这适用于VisualStudio,并且适用于一台计算机上的GCC4.9.2。但在不同的计算机上,我认为它是相同的GCC4.9.2编译器,但它给了我这个错误。我错过了什么吗?怎么回事?#include#include#includeusingnamespacestd;intmain(){stringfilename;filename="teststring";ofstreamfout;fout.open(filename);fout.||===Build:Debuginfileiotest(compiler:TDM32GNUGCCCompiler4.9.2dw2)===|F:\Users

c++ - 关于long long和long double

它们什么时候成为标准C++的一部分?我认为longlong是C++0x的特性,对吗?longdouble怎么样?它已经在C++98或C++03中了吗? 最佳答案 longdouble和longlong已经存在了很长一段时间,并分别在C89和C99中标准化。C++从其第一个版本C++98标准化了longdouble,并将在即将到来的标准修订中添加longlong。 关于c++-关于longlong和longdouble,我们在StackOverflow上找到一个类似的问题:

c++ - 关于strcmp的问题

例如我们有两个字符串:strings="cat";strings1="dog";这样写方法对吗?inta=strcmp(s,s1);或者什么才是正确的形式? 最佳答案 C++的std::string可以直接比较,所以你可以只写例如if(s==s1)cout但是如果你真的需要整数值,你可以使用the.comparemethod.inta=s.compare(s1); 关于c++-关于strcmp的问题,我们在StackOverflow上找到一个类似的问题: ht

c++ - ostream/ofstream 继承问题

我正在编写C++程序,我需要一些帮助来理解错误。默认情况下,我的程序会打印到终端(STDOUT)。但是,如果用户提供文件名,程序将打印到该文件。如果我正在写入终端,我将使用std::cout对象,而如果我正在写入一个文件,我将创建并使用std::ofstream对象。但是,我不想一直检查我是否应该写入终端或文件。由于std::cout和std::ofstream对象都继承自std::ostream类,我想我会创建一种接受std::ostream对象的print_output函数。在调用此函数之前,我会检查是否应该打印到文件中。如果是这样,我将创建std::ofstream对象并将其传递

c++ - 关于 C++ 中 sizeof(class) 用法抛出的错误

当我用C++编译我的项目时,MSVC抛出以下错误:error#94:thesizeofanarraymustbegreaterthanzero执行sizeof时在以下行中抛出错误:if(sizeof(MyNamespace::MyClass)==60)MyClass是这样定义的:classMyClass:publicParentClass{public:MyClass(void*pCreate,inta,intb,boolc):ParentClass(pCreate,a,b,c){}virtualinlinevoidmyFunc(){//something}private:virtua